<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>canvas</title>
  <style>
    body {
      text-align: center;
      padding-top: 20px;
    }

    canvas {
      margin: 0 auto;
      box-shadow: 0 0 40px #333;
    }
  </style>
</head>

<body>
  <canvas id="canvas" width="800" height="600">
    你的浏览器太low了~
  </canvas>
  <script>
    window.onload = function () {
      var canvas = document.getElementById('canvas')
      if (canvas.getContext) {
        var cvsCtx = canvas.getContext('2d');

        cvsCtx.beginPath();
        cvsCtx.fillStyle = 'blue';
        cvsCtx.save(); // 存储到栈里
        cvsCtx.fillRect(100, 100, 150, 150);
        cvsCtx.closePath();

        cvsCtx.beginPath();
        cvsCtx.fillStyle = 'red';
        cvsCtx.save();
        cvsCtx.fillRect(100, 300, 150, 150);
        cvsCtx.closePath();

        cvsCtx.beginPath();
        cvsCtx.restore(); // 取出栈内保存的状态：red
        cvsCtx.fillRect(350, 100, 150, 150);
        cvsCtx.closePath();


        cvsCtx.beginPath();
        cvsCtx.restore(); // blue
        cvsCtx.fillRect(350, 300, 150, 150);
        cvsCtx.closePath();

        // 如果栈内没有那么多，restore就取第一个save的状态信息
      } else {
        alert('你的浏览器太low了~')
      }
    }
  </script>

</body>

</html>